﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Linq;

namespace AlgorithmTest
{
    // T_[四个数字排序]_[算法名]
    public class T_0168_AddStrings : IAlgorithm
    {
        // 415. 字符串相加

        // 给定两个字符串形式的非负整数 num1 和num2 ，计算它们的和并同样以字符串形式返回。
        // 你不能使用任何內建的用于处理大整数的库（比如 BigInteger）， 也不能直接将输入的字符串转换为整数形式。

        // 提示：
        // 1 <= num1.length, num2.length <= 10^4
        // num1 和num2 都只包含数字 0-9
        // num1 和num2 都不包含任何前导零


        public void Test()
        {
            // 算法参数定义
            string num1 = "11", num2 = "123";
            // 算法执行与打印
            Console.WriteLine(AddStrings(num1, num2));
            //var res = Algorithm(param);
            //foreach (var item in res)
            //{
            //    foreach (var iitem in item)
            //    {
            //        Console.Write(iitem + " ");
            //    }
            //    Console.WriteLine();
            //}
        }

        // 算法
        public string AddStrings(string num1, string num2)
        {
            int i = num1.Length - 1, j = num2.Length - 1, add = 0;
            var result = string.Empty;
            while (i >= 0 || j >= 0 || add > 0)
            {
                var n1 = i >= 0 ? num1[i] - '0' : 0;
                var n2 = j >= 0 ? num2[j] - '0' : 0;
                var sum = n1 + n2 + add;
                result = sum % 10 + result;
                add = sum / 10;
                i--;
                j--;
            }
            return result;
        }

    }
}
